20. 重载函数

重载

现在,我们已经学习了如何创建一个类,并讨论了类所包含的一些基本函数和变量。接下来,让我们看点新的东西!

双下划线 __X__

你已经看到了一些有双下划线的函数的例子,比如:

 __init__

__repr__

它们是 特殊函数 ,在 Python 中有特定的使用方式。

我们通常不会像调用 move() turn_left() 一样直接调用这些函数。

相反,Python 会根据我们对关键字和运算符的使用 自动 调用这些函数。

例如,当我们创建一个新的对象时会调用 __init__ ;当我们告诉 Python 输出一个特定的对象的字符串表示时会调用 __repr__

另一个例子: __add__

所有这些特殊函数的名字都写在两条下划线 __ 之间,这种类型的函数有很多!要查看这些函数的完整列表,请查看 Python 文档

例如,我们可以通过定义 __add__ 函数来定义在使用 “+” 符号添加两个车辆对象时发生的情况。

def __add__(self, other):
    # Create an empty list
    added_state = []

    # Add the states together, element-wise
    for i in range(self.state):
        added_value = self.state[i] + other.state[i]
        added_state.append(added_value)

    return added_state

上面的版本,把状态变量加在一起!或者…..你可以选择输出:添加汽车是一个无效的操作 ('adding cars is an invalid operation'),如下所示。

def __add__(self, other):
    # Print an error message and return the unchanged, first state
    print('Adding two cars is an invalid operation!')
    return self.state

运算符重载

当我们在类中定义这些函数时,被称为 运算符重载

在本例中,重载表示:为一个标准运算符
赋予一个以上的意思

运算符重载是一个强大的工具,它不仅会在我们的课堂上不断出现,但是对于编写直观易用的类很有用。所以,当你继续学习时,请务必记住这一点。下面, 我们来练习运算符重载吧!